#include "ManejadorSalidaPrueba.h"

ManejadorSalidaPrueba::ManejadorSalidaPrueba()
{
	pantalla = cout.rdbuf();
}

ManejadorSalidaPrueba::~ManejadorSalidaPrueba()
{
	if (archivoActual.is_open())
		archivoActual.close();
}

void ManejadorSalidaPrueba::CadenaToChar(const Cadena& c, char chr[MAX_CADENA]) const
{
	nat i;
	for (i = 0; i < c.Largo() && i < MAX_CADENA - 1; i++)
		chr[i] = c[i];
	chr[i] = '\0';
}

void ManejadorSalidaPrueba::SetSalidaArchivo(Cadena nombreArchivo)
{
	if (archivoActual.is_open())
		archivoActual.close();

	char chr[MAX_CADENA];
	CadenaToChar(nombreArchivo, chr);
	archivoActual.open(chr, ios::out);
	printf("Se creo el archivo: %s\n", chr);
	cout.rdbuf(archivoActual.rdbuf());
}

void ManejadorSalidaPrueba::SetSalidaPantalla()
{
	if (archivoActual.is_open())
		archivoActual.close();
	cout.rdbuf(pantalla);
}

void ManejadorSalidaPrueba::CrearDirectorio(Cadena nombreDirectorio)
{
	char chr[MAX_CADENA];
	CadenaToChar(nombreDirectorio, chr);
	_mkdir(chr);
	_chdir(chr);
	printf("Se creo el directorio: %s\n", chr);
}

void ManejadorSalidaPrueba::CambiarDirectorio(Cadena nombreDirectorio)
{
	char chr[MAX_CADENA];
	CadenaToChar(nombreDirectorio, chr);
	_chdir(chr);
}

bool ManejadorSalidaPrueba::operator==(const ManejadorSalidaPrueba& msp) const
{
	return this == &msp;
}
